package movilmax.sia_corp.action;

import java.util.LinkedList;
import java.util.Map;

import movilmax.sia_corp.model.DetalleInstalacion;
import movilmax.sia_corp.model.Instalacion;
import movilmax.sia_corp.model.Usuario;
import apli.conectar.Conectar;
import basedatos.Fecha;
import basedatos.Resultado;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class ReporteInstalaciones extends ActionSupport{

	private static final long serialVersionUID = 514546179176024206L;
	
	
	private LinkedList<Instalacion> rpt_lista;
	private String fechai;
	private String fechaf;
	private String nodo;
	private String tarea;
	private String transporte;
	private String statusInstalacion;
	private String contrato;
	private String codI;
	private DetalleInstalacion detalleI;
	private Fecha F = new Fecha();
	LinkedList<DetalleInstalacion> lista_detTk;
	
	@SuppressWarnings("rawtypes")
	public String consultarInstalaciones(){
		
		rpt_lista=new LinkedList<Instalacion>();
		String SQL="",c1="",c2="",c3="",c4="",c5="", c6="";
		Map session = ActionContext.getContext().getSession();
    	Usuario USUARIO = (Usuario) session.get("ses_usuario");
		if(USUARIO==null){
			this.addActionError("La sesion del usuario ha caducado" ); 
			return ERROR;
		}
		Conectar BASE=new Conectar();
		if(!BASE.getMsg().equals("SI")){
			this.addActionError("No hay conexion al servidor");
			return ERROR;
		}
		
	/*-------------------------------------condiciones por filtro------------------------------------*/
		
		if( this.getFechai() !=null && this.getFechaf() !=null ){
			if (!this.getFechai().equals("") && !this.getFechaf().equals("") ){
				c1=" and I.fecha BETWEEN '" + this.getFechai() + "' and  '" + this.getFechaf()+"' " ;
			}
		}
		if(!this.getTarea().equals("-1") ){
    		c2=" AND T.cod='"+this.getTarea()+"' " ;
    	}
		
		if(!this.getNodo().equals("-1") ){
			c3="AND R.cod='"+this.getNodo()+"' ";
    	}
		
		if(!this.getTransporte().equals("-1") ){
			c4=" AND TTR.cod='"+this.getTransporte()+"'  ";
    	}
		
		if(!this.getStatusInstalacion().equals("-1") ){
			c5= "AND SI.cod='"+this.getStatusInstalacion()+"' ";
    	}
		if(!this.getContrato().equals("") ){
			c6= " AND C.contrato like '%"+this.getContrato()+"%' ";
    	}
		
		
		/*-------------------------------------fin condiciones por filtro------------------------------------*/		
		SQL="SELECT I.codigo, T.descripcion as tarea, R.descripcion as nodo, TTR.descripcion as transporte, I.responsable, I.contrato, SI.descripcion as status, I.fecha, I.hora"+
			" FROM instalaciones I, tareas_empleados T, tipos_transporte TTR, status_instalaciones SI, radio_bases R, contratos C"+
			" WHERE I.tarea=T.cod AND I.transporte=TTR.cod AND I.[status]= SI.cod AND I.nodo=R.cod AND I.contrato=C.contrato"+c1+c2+c3+c4+c5+c6;
		System.out.println("*************************"+SQL);
		Resultado RCS=BASE.getBaseDatos().consultar(SQL);
		Resultado RCS_= new Resultado();
		LinkedList<DetalleInstalacion> lista_detTk = new LinkedList<>();
		Fecha F = new Fecha();
		boolean x=false;
		  if(RCS.RP){
			  do{ 
				  Instalacion ITM= new Instalacion();
				  ITM.setCodigo(RCS.getCadena("codigo"));
				  ITM.setTarea(RCS.getCadena("tarea"));
				  ITM.setNodo(RCS.getCadena("nodo"));
				  ITM.setTransporte(RCS.getCadena("transporte"));
				  ITM.setResponsable(RCS.getCadena("responsable"));
				  ITM.setContrato(RCS.getCadena("contrato"));
				  ITM.setStatus(RCS.getCadena("status"));
				  ITM.setFecha(F.formateaFecha(RCS.getCadena("fecha"),true));
				  ITM.setHora(RCS.getCadena("hora"));
				  
				  SQL="SELECT TOP 1 DI.item, DI.instalacion, DI.usuario, DI.fecha, DI.hora, DI.obs FROM detalle_instalaciones DI WHERE DI.instalacion='"+ITM.getCodigo()+"'";
				  RCS_=BASE.getBaseDatos().consultar(SQL);
				  if(RCS_.RP){
					  do{
						   detalleI=new DetalleInstalacion();
						   detalleI.setItem(RCS.getCadena("item"));
						   detalleI.setInstalacion(RCS.getCadena("instalacion"));
						   detalleI.setUsuario(RCS.getCadena("usuario"));
						   detalleI.setFecha(F.formateaFecha(RCS.getCadena("fecha"), true));
						   detalleI.setHora(RCS.getCadena("hora"));
						   
						 
						   lista_detTk.add(detalleI);
					  }while(RCS_.sigItem());
				  }
				  ITM.setDetalle_instalacion(lista_detTk);
				  if(!RCS.getCadena("status").equals("0")){
					  x=(x ? false: true);
					  if(x)
					    ITM.setStylo("tabla_fil_normal1");
					  else
						ITM.setStylo("tabla_fil_normal2");  
				  }else{
					  ITM.setStylo("tabla_fil_anulado");
				  }
				  rpt_lista.add(ITM);
			  }while(RCS.sigItem()); 
		  }
		BASE.getBaseDatos().cerrarConexion();
		return SUCCESS;
	
	}
	
	//------------------------------------------Metodo Consultar Detalles x Instalacion
	public String consultarDetallesInstalaciones(){
			
			Fecha F = new Fecha();
		  	detalleI=new DetalleInstalacion();
		  	Resultado RCS = new Resultado();
		  	lista_detTk= new LinkedList<>();
		  	boolean x=false;
		  	String SQL;
		  	Map<?, ?> session = ActionContext.getContext().getSession();
	    	Usuario USUARIO = (Usuario) session.get("ses_usuario");
	    	
	    	
			if(USUARIO==null){
				this.addActionError("La sesion del usuario ha caducado" ); 
				return ERROR;
			}
			Conectar BASE=new Conectar();
			if(!BASE.getMsg().equals("SI")){
				this.addActionError("No hay conexion al servidor");
				return ERROR;
			}
			
			SQL="SELECT TOP 1 DI.item, DI.instalacion, DI.usuario, DI.fecha, DI.hora, DI.obs FROM detalle_instalaciones DI WHERE DI.instalacion='"+this.getCodI()+"'";
			RCS=BASE.getBaseDatos().consultar(SQL);
			  if(RCS.RP){
				  do{
					  detalleI=new DetalleInstalacion();
					   detalleI.setItem(RCS.getCadena("item"));
					   detalleI.setInstalacion(RCS.getCadena("instalacion"));
					   detalleI.setUsuario(RCS.getCadena("usuario"));
					   detalleI.setFecha(F.formateaFecha(RCS.getCadena("fecha"), true));
					   detalleI.setHora(RCS.getCadena("hora"));
					   detalleI.setObs(RCS.getCadena("obs"));
					   x=(x ? false: true);
						  if(x)
							  detalleI.setStylo("tabla_fil_normal1");
						  else
							  detalleI.setStylo("tabla_fil_normal2"); 
					   lista_detTk.add(detalleI);
				  }while(RCS.sigItem());
			  }
			  BASE.getBaseDatos().cerrarConexion();
			return SUCCESS;
		}
	
	
	
	//-------------------------------GETTERS AND SETTERS  ----------------------------//

	public LinkedList<Instalacion> getRpt_lista() {
		return rpt_lista;
	}

	public void setRpt_lista(LinkedList<Instalacion> rpt_lista) {
		this.rpt_lista = rpt_lista;
	}

	public String getFechai() {
		return fechai;
	}

	public void setFechai(String fechai) {
		this.fechai = fechai;
	}

	public String getFechaf() {
		return fechaf;
	}

	public void setFechaf(String fechaf) {
		this.fechaf = fechaf;
	}

	public String getNodo() {
		return nodo;
	}

	public void setNodo(String nodo) {
		this.nodo = nodo;
	}

	public DetalleInstalacion getDetalleI() {
		return detalleI;
	}

	public void setDetalleI(DetalleInstalacion detalleI) {
		this.detalleI = detalleI;
	}

	public Fecha getF() {
		return F;
	}

	public void setF(Fecha f) {
		F = f;
	}

	public LinkedList<DetalleInstalacion> getLista_detTk() {
		return lista_detTk;
	}

	public void setLista_detTk(LinkedList<DetalleInstalacion> lista_detTk) {
		this.lista_detTk = lista_detTk;
	}



	public String getTarea() {
		return tarea;
	}



	public void setTarea(String tarea) {
		this.tarea = tarea;
	}



	public String getTransporte() {
		return transporte;
	}



	public void setTransporte(String transporte) {
		this.transporte = transporte;
	}



	public String getStatusInstalacion() {
		return statusInstalacion;
	}



	public void setStatusInstalacion(String statusInstalacion) {
		this.statusInstalacion = statusInstalacion;
	}



	public String getContrato() {
		return contrato;
	}



	public void setContrato(String contrato) {
		this.contrato = contrato;
	}

	public String getCodI() {
		return codI;
	}

	public void setCodI(String codI) {
		this.codI = codI;
	}
	

}
